package com.xnyzc.lhy.mis.service.cms.driver;

import com.xnyzc.lhy.common.entity.Rv;
import com.xnyzc.lhy.mis.entity.cms.driver.DriverUserInfo;

/**
 * 司机管理接口
 *
 * @author zhaolijie
 * @date 2019-08-21 19:36
 */
public interface DriverManageService {


    /**
     * 司机信息管理列表查询
     *
     * @param current       页面
     * @param cityCode      城市
     * @param officeId      部门ID
     * @param accountStatus 账号状态
     * @param driverPhone   手机号码
     * @param driverName    司机姓名
     * @param service       业务类型
     * @param vehicleTeam   车队
     * @param driverType    司机类型
     * @param vehNo         车牌号
     * @return
     */
    Rv getDriverManagementList(Integer current, Integer pageSize, String cityCode, Long officeId, String accountStatus, String driverPhone, String driverName, String service, String vehicleTeam, String driverType, String vehNo, Integer acceptancOrderStatus);

    /**
     * 司机信息管理列表查询导出
     *
     * @param current       页面
     * @param cityCode      城市
     * @param accountStatus 账号状态
     * @param driverPhone   手机号码
     * @param driverName    司机姓名
     * @param service       业务类型
     * @param vehicleTeam   车队
     * @param driverType    司机类型
     * @param vehNo         车牌号
     * @return
     */
    Rv getDriverManagementListExport(Integer current, Integer pageSize, String cityCode, String accountStatus, String driverPhone, String driverName, String service, String vehicleTeam, String driverType, String vehNo, Integer acceptancOrderStatus);

    /**
     * 获取司机列表页面模糊下拉选
     *
     * @return
     */
    Rv getSelectList();


    /**
     * 查看司机详情
     *
     * @param driverId：司机Id
     * @return
     */
    Rv getDriverDetails(Long driverId);

    /**
     * 添加司机信息
     *
     * @param driverUserInfo：接收司机信息的实体类
     * @return
     */
    Rv addDriver(DriverUserInfo driverUserInfo);

    /**
     * 修改司机信息
     *
     * @param driverUserInfo：接收司机信息的实体类
     * @return
     */
    Rv updateDriver(DriverUserInfo driverUserInfo);

    /**
     * 删除司机信息
     *
     * @param driverUserInfo：接收司机信息的实体类
     * @return
     */
    Rv deleteDriver(DriverUserInfo driverUserInfo);

    /**
     * 获取司机车辆关联管理信息
     *
     * @return
     */
    Rv getDriverVehicle(Integer current);

    /**
     * 模糊查询获取司机车辆关联管理信息
     *
     * @param current:需要查询的页码
     * @param driverOnlineStatus:司机在线状态（0：在线、1：下在线线）
     * @param isUse:是否正在使用(0：否、1：是）
     * @param driverPhone:手机号码
     * @param driverName:用户姓名
     * @return
     */
    Rv getDriverVehicleLike(Integer current, String driverOnlineStatus, String isUse, String driverPhone, String driverName);

    /**
     * 获取下载模板数据
     *
     * @return
     */
    Rv getDriverDownloadTemplate();

    /**
     * 更换车辆查询
     *
     * @return
     */
    Rv getChangeVehicleList(Integer current, Integer size, String vehNo);

    /**
     * 更换车辆
     *
     * @param driverId 司机Id
     * @return
     */
    Rv getChangeVehicle(Long driverId, Long vehicleId);

    /**
     * 解绑车辆
     *
     * @param driverId 司机Id
     * @return
     */
    Rv getUnbindVehicle(Long driverId);


    Rv getDriverLicenseImgInfoById(Long driverId);

    Rv getAllDriverGPSInfo();

    Rv getDriverInfoByNameAndVehicle(String driverName, String vehNo);

    Rv getThisDriverPosition(Long driverId);

    Rv putOrPopDriverBlocklist(Long driverId, Integer isBlocked);

    Rv queryPersonSearchAsync(String orderNo);
}
